package com.company.ljh.easy;
/**
 * 278.输入：n = 5, bad = 4
 * 输出：4
 * 解释：
 * 调用 isBadVersion(3) -> false
 * 调用 isBadVersion(5) -> true
 * 调用 isBadVersion(4) -> true
 * 所以，4 是第一个错误的版本。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/first-bad-version
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

/**
 * @description:
 * @projectName:leet_code
 * @see:com.company.ljh.easy
 * @author:ljh
 * @createTime:2022/5/29 18:00
 * @version:1.0
 */
public class 第一个错误版本 {
    //二分查找，结束条件为start=end，二分公式需采用 middle = (end-start)/2+start;
    public int firstBadVersion(int n) {
        return findBad(1,n);
    }
    int findBad(int start ,int end){
        if(start == end){
            return start;
        }
        int middle = (end-start)/2 + start;
        if(isBadVersion(middle)){
            return findBad(start,middle);
        }else{
            return findBad(middle + 1,end);
        }
    }

    private boolean isBadVersion(int middle) {
        return false;
    }
}
